盒子
盒子

XSS攻击——跨站脚本攻击与防御 第一章 跨站脚本原理(2) Web应用安全

Web为八亿网民提供了场所,是一亿网站之家以及每天具有数十亿美金的传输。作为全球化的一个现象,国际贸易已经依赖于互联网。这距离电子邮件、留言板、聊天室、网上拍卖、网上购物、网上新闻、网上银行以及其他网络软件成为我们生活中的一部分,并没有花多长时间。现在,用户交出了他的姓名、住址、社保号、信用卡信息、电话号码、母亲的婚前姓氏,年薪、出生日期有时甚至是他最喜欢的颜色或者是幼儿园老师的名字来接受财政声明、纳税记录或者每天的现货贸易。并且就像我前面提到的,十分之八的网站有严重的安全问题使得你的数据很危险。甚至是最安全的系统也在被新的最近被定义为”Web应用安全“的问题困扰着。

收集个人信息及隐私的组织有义务保护数据,由于Web应用安全问题变得越来越重要,我们需要更认真的去思考这个问题。我们面对的已经不仅仅是相对惹人烦的认证窃取,脚本小子入侵以及全部公开的滑稽。新的具有控制全国电网、操作水利发电大坝、开处方、管理大多数美国公司的工资名单、使用企业内网或者管理其他相当重要功能的网站上线。考虑一下,如果这些系统被恶意渗透的会是怎么样。很难想象信息安全有如此重要。Web应用如今已成为系统渗透中最简单直接且最引人注目的方法。

直到最近,每个人认为防火墙、SSL、免打扰系统、网络扫描器以及密码是网络安全的解决办法。安全教授从高筑墙的军事思想得到启发,建立黑白名单。对于大部分,这种策略是很有效的,可是Web和电子商务改变了这种状况。电子商务需要防火墙允许Web(80端口的HTTP和443端口的HTTPS)传输,似乎是一夜之间互联网从有墙的网络变成了全球的电子商务市场。墙不再是密不透风的,安全管理员发现他们没办法保护这个不安全的Web应用。

Web开发者现在在创造激发电子商务的应用的同时也对网络安全负责。基础的软件设计原则不得不随之改变。变革之前的经验是大部分软件只有一个相对较少的用户数量。开发者现在创造出可以在网络服务器上运行的应用,任何人在任何地点都可以得到。他们软件传播的数量和范围以指数增加,由此安全问题也加剧了。现在全球数亿用户可以直接访问公司的服务器,其中可能就有一部分是恶意的敌人。新的事由例如XSS,SQL注入以及数十种新的基于Web的攻击需要处理。

图1.1 漏洞层级

vulnerability_stack

Web应用安全是一个包含很多法则、技术、设计理念的话题,通常我们感兴趣的领域是如图1.1中从服务器往上的软件层面。这包括应用服务器例如JBoss,IBM WebSphere,BEA WebLogic以及其余1000多个。然后我们前进到一些商业的或者开源的Web应用,像PHP Nuke,Microsoft Outlook Web Access以及ASP。这些之后就是内部定制的Web应用。这一层是Web应用安全的重灾区。

Web应用开发者不得不考虑的最严重的威胁之一是XSS攻击。虽然XSS是Web安全中相对较小的一部分,但是它可能是关于用户的最危险的。一个很小的bug可能导致浏览器弱点,借助此攻击者可以窃取数据,了解用户的浏览历史或者其余更多的事情。

讽刺的是,许多人不理解XSS攻击的危害以及他是怎样被用来攻击普通受害者的。这本书的目标就是通过一系列的讨论、例子和证据来教育读者了解XSS的重要性。